typedef struct {
    int x;
    int y;
} POINT;
void input(POINT *q) {
    scanf("%d%d",&q->x,&q->y);
}
void output(POINT *q) {
    printf("(%d,%d)",q->x,q->y);
}
double distance(POINT*p,POINT*q){
    double dx=p->x - q->x;
    double dy=p->y - q->y;
    return sqrt(dx*dx+dy*dy);
}
double area(POINT*a,POINT*b,POINT*c){
    double A=distance(b,c),B=distance(a,c),C=distance(a,b);
    double S=(A+B+C)/2;
    return sqrt(S*(S-A)*(S-B)*(S-C));
}
POINT mid_bad(POINT*p,POINT*q){
    POINT m;
    m.x=(p->x+q->x)/2;
    m.y=(p->y+q->y)/2;
    return m;
}
POINT* mid_bad2(POINT*p,POINT*q){
    POINT m;
    m.x=(p->x+q->x)/2;
    m.y=(p->y+q->y)/2;
    return &m;
}
void mid(POINT*p,POINT*q,POINT*mid){
    //TODO
}
POINT* mid(POINT*p,POINT*q){
    POINT*m=(POINT*)malloc(sizeof(POINT));
    m->x=(p->x+q->x)/2;
    m->y=(p->y+q->y)/2;
    return &m;
}
int main() {
    POINT q,p;
    input(&p);
    input(&q);
    output(&p);
    output(&q);
    printf("%f\n",distance(&p,&q));
    POINT r={0,13};
    printf("%f\n",area(&p,&q,&r));
    return 0;
}
